/* 244 */
function _typeof3(e){
  // var _typeof2 = __webpack_require__(36);
  return typeof(e)
}
/***/
function jsonToArray(jsonObj, plainArray) {
  var _plainArray;

  plainArray = plainArray || [];
  if (!Array.isArray(plainArray)) {
    throw new Error('from json发生意外！');
  }

  // plainArray.length = 0;
  var tempPA = new Array(jsonObj.length);
  jsonObj.forEach(function(e, index) {
    // 避免mobx警告plainArray没有index这一项！
    // const result = (index >= 0 && index < plainArray.length) ? plainArray[index] : undefined;

    if (Array.isArray(e)) {
      tempPA[index] = jsonToArray(e, tempPA[index]);
    } else if ((typeof e === 'undefined' ? 'undefined' : _typeof3(e)) === 'object') {
      tempPA[index] = jsonToPlainObject(e, tempPA[index]);
    } else {
      tempPA[index] = e;
    }
  });
  (_plainArray = plainArray).splice.apply(_plainArray, [0, plainArray.length].concat(tempPA));

  return plainArray;
}

function jsonToPlainObject(jsonObject, plainObject, filterKeys) {
  plainObject = plainObject || {};
  Object.keys(jsonObject).filter(function(key) {
    return !(filterKeys && filterKeys.includes(key));
  }).forEach(function(key) {
    if (typeof jsonObject[key] === 'undefined' || jsonObject[key] === null) {
      plainObject[key] = undefined;
    } else if (Array.isArray(jsonObject[key])) {
      plainObject[key] = jsonToArray(jsonObject[key], plainObject[key]);
    } else if (_typeof3(jsonObject[key]) === 'object') {
      plainObject[key] = plainObject[key] || {};
      if (!plainObject[key].xbsjFromJSON) {
        jsonToPlainObject(jsonObject[key], plainObject[key], filterKeys);
      } else {
        plainObject[key].xbsjFromJSON(jsonObject[key]);
      }
    } else {
      plainObject[key] = jsonObject[key];
    }
  });

  return plainObject;
}

export default jsonToPlainObject;
